﻿using System;
using System.Runtime.InteropServices;

namespace Ajax.Tools.Security
{
    /// <summary>
    /// 机器码
    /// </summary>
    public class Key
    {
        [DllImport("kernel32.dll")]
        private static extern int GetVolumeInformation
            (
            string lpRootPathName,
            string lpVolumeNameBuffer,
            int nVolumeNameSize,
            ref int lpVolumeSerialNumber,
            int lpMaximumComponentLength,
            int lpFileSystemFlags,
            string lpFileSystemNameBuffer,
            int nFileSystemNameSize
            );

        /// <summary>
        /// C盘序列号 
        /// </summary>
        /// <param name=""></param>
        /// <returns></returns>
        public static string HDVal()
        {
            const int MAX_FILENAME_LEN = 256;
            int retVal = 0;
            int a = 0;
            int b = 0;
            string str1 = null;
            string str2 = null;
            int i = GetVolumeInformation(
                "c:\\",
                str1,
                MAX_FILENAME_LEN,
                ref retVal,
                a,
                b,
                str2,
                MAX_FILENAME_LEN
                );

            return retVal.ToString();
        }
    }
}